package com.yueqian.sc.dao.impl;

import com.yueqian.sc.bean.SelectCourse;
import com.yueqian.sc.dao.ISelectCourseDao;
import com.yueqian.sc.db.DBHelper;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class SelectCourseDao implements ISelectCourseDao {
    /**
     * 选择课程（添加）
     *
     * @param selectCourse 包含了学生编号和课程编号
     * @return
     */
    @Override
    public boolean addSelectCourse(SelectCourse selectCourse) {
        Connection conn = null;
        PreparedStatement smt = null;
        try {
            // 1. 获取数据库连接
            conn = DBHelper.getConnection();
            // 2. 编写sql语句
            String sql = "insert into select_course(student_id,course_id) value(?,?)";
            // 3. 创建预处理对象
            smt = conn.prepareStatement(sql);
            // 4. 使用外部动态数据替换掉占位符?
            smt.setInt(1, selectCourse.getStudentId());
            smt.setInt(2, selectCourse.getCourseId());
            // 5. 执行sql,返回受影响的行数
            int row = smt.executeUpdate();// 增删改都用这个方法
            return row > 0 ? true : false;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 6. 关闭数据库连接
            DBHelper.close(smt, conn);
        }
        return false;
    }

    /**
     * 取消选择课程（删除）
     *
     * @param selectCourse 包含了学生编号和课程编号，因为是双主键，所以需要通过两个编号实现真删除
     * @return
     */
    @Override
    public boolean deleteSelectCourse(SelectCourse selectCourse) {
        Connection conn = null;
        PreparedStatement smt = null;
        try {
            // 1. 获取数据库连接
            conn = DBHelper.getConnection();
            // 2. 编写sql语句
            String sql = "delete from select_course where student_id=? and course_id=?";
            // 3. 创建预处理对象
            smt = conn.prepareStatement(sql);
            // 4. 使用外部动态数据替换掉占位符?
            smt.setInt(1, selectCourse.getStudentId());
            smt.setInt(2, selectCourse.getCourseId());
            // 5. 执行sql,返回受影响的行数
            int row = smt.executeUpdate();// 增删改都用这个方法
            return row > 0 ? true : false;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            // 6. 关闭数据库连接
            DBHelper.close(smt, conn);
        }
        return false;
    }
}
